# V交流：18223205366
# 三要素转债第1版
# 总评分=溢价率升序排名+价格升序排名+到期收益率降序排名  最终结果逆序
# -*- coding:utf-8 -*-
import time
from operator import itemgetter

from constants.MyConstant import DIR_NAME, HEADER_1
from GetLoginData import get_jsl_data
from util.FileUtils import save_csv


class HandleData:
    def get_dat(self):
        dat = get_jsl_data()
        # print(dat)

        # 所有数据
        lst_data = []
        for row in dat['rows']:
            # 每一条数据
            lst_dat = []
            # 转债id
            id = row["id"]
            # 排名
            rank = 1
            # 评分
            rate = 1
            dat_cell = row["cell"]
            # 是否赎回
            is_shui = dat_cell['force_redeem']
            if is_shui == None:
                # 转债名称
                name = dat_cell['bond_nm']
                # 现价
                price = dat_cell['price']
                # 溢价率
                yjl = dat_cell['premium_rt']
                # 评级
                rating_cd = dat_cell['rating_cd']
                # 剩余时间
                last_time = dat_cell['year_left']
                # 剩余规模
                last_scale = dat_cell['orig_iss_amt']
                # 到期税前收益
                ytm_rt = dat_cell['ytm_rt']
                # 双低
                # dblow = dat_cell['dblow']

                # 去掉溢价率和到期税前收益为空的转债
                if yjl == '-' or ytm_rt == '-':
                    continue
                # 溢价率去掉%，取2位小数点
                yjl_num = round(float(yjl.strip("%")), 2)
                if yjl_num > 15:
                    continue
                # 到期税前收益去掉%，取2位小数点
                ytm_rt_num = round(float(ytm_rt.strip("%")), 2)
                if ytm_rt_num <= 0:
                    continue

                lst_dat.append(rank)
                lst_dat.append(rate)
                lst_dat.append(id)
                lst_dat.append(name)
                lst_dat.append(rating_cd)
                lst_dat.append(last_time)
                lst_dat.append(last_scale)
                # lst_dat.append(dblow)
                lst_dat.append(float(price))
                lst_dat.append(rate)
                lst_dat.append(yjl)
                lst_dat.append(yjl_num)
                lst_dat.append(ytm_rt)
                lst_dat.append(ytm_rt_num)
                lst_data.append(lst_dat)
            else:
                continue

        # 根据价格升序排序
        lst_data = sorted(lst_data, key=itemgetter(7), reverse=False)
        for index in range(len(lst_data)):
            lst_data[index][8] = index + 1
        # 根据溢价率升序排序
        lst_data = sorted(lst_data, key=itemgetter(10), reverse=False)
        for index in range(len(lst_data)):
            lst_data[index][10] = index + 1
        # 根据到期收益率降序排序
        lst_data = sorted(lst_data, key=itemgetter(12), reverse=True)
        for index in range(len(lst_data)):
            lst_data[index][12] = index + 1
        # 总评分=溢价率升序排名+价格升序排名+到期收益率降序排名
        for index in range(len(lst_data)):
            lst_data[index][1] = lst_data[index][8] + lst_data[index][10] + lst_data[index][12]
        # 根据总评分排序
        lst_data = sorted(lst_data, key=itemgetter(1), reverse=False)
        for index in range(len(lst_data)):
            lst_data[index][0] = index + 1
        return lst_data


def write_csv(data):
    # 格式化成2016-03-20形式
    today = time.strftime("%Y-%m-%d", time.localtime())
    path = DIR_NAME + '/' + '可转债' + today + '-01.csv'
    save_csv(path, HEADER_1, data)


def get_three_elements1():
    dat = HandleData().get_dat()
    print(dat)
    write_csv(dat)


if __name__ == '__main__':
    dat = HandleData().get_dat()
    print(dat)
    for da in dat:
        print(da)
    # write_csv(dat)
